GitHub

您所在的位置:网站首页 considerably reduce GitHub

GitHub

#GitHub| 来源: 网络整理| 查看: 265

Compressed String Class for PHP

Based on the wonderful work by Tom Westcott (https://packagist.org/packages/cyberdummy/gzstream) which provided most of the functionality I required. Allows for gzip compressed string streams to be used for holding data. This project was created because I wanted a way to store large database result sets more easily in memory (especially ones that were just going to be output as JSON in an API response), since using a regular PHP array resulted in large memory usage.

Installation with Composer curl -s http://getcomposer.org/installer | php php composer.phar require orware/compressed-string

OR

composer require orware/compressed-string Usage

It's primarily intended to be used in a write forward way (primarily because going back to the beginning of a gzip string requires it to be decoded, so prepending should be discouraged from excessive use), but you do have the option to prepend text when needed:

use Orware\Compressed\CompressedString; $compressedString = new CompressedString(); // You may write multiple times: $content = 'The quick brown fox jumps over the lazy dog'; $compressedString->write($content); $moreContent = 'The quick brown fox jumps over the lazy dog'; $compressedString->write($moreContent); // You can prepend text as well // (currently this involves creating a new stream, adding the prepended text, then copying the existing stream into the new stream): $textToPrepend = 'PREPENDED'; $compressedString->prepend($textToPrepend); // You can write more text after prepending text: $evenMoreContent = 'The quick brown fox jumps over the lazy dog'; $compressedString->write($evenMoreContent); // You can pass in a PHP array or object and it will get automatically JSON encoded: $list = [1, 2, 3, 4, 5, 6]; $compressedString->write($list); // Gets the Decompressed String: $decompressedString = $compressedString->getDecompressedContents(); // Writes the Decompressed String Directly to a file: $compressedString->writeDecompressedContents('tests/files/appended_test_decompressed.txt'); // Writes the Compressed String Directly to a file: $compressedString->writeCompressedContents('tests/files/appended_test_compressed.gz');

There's also the ability to merge in one or more compressed strings into a "wrapper" string. In my case my wrapper contained some metadata about the JSON results.

use Orware\Compressed\CompressedString; use Orware\Compressed\CompressedStringList; $compressedString1 = new CompressedString(); $content = 'My first string'; $compressedString1->write($content); $compressedString2 = new CompressedString(); $content = 'My second string'; $compressedString2->write($content); $compressedString3 = new CompressedString(); $content = 'My third string'; $compressedString3->write($content); // You must use this StringList class (it's what the merge call below expects): $list = new CompressedStringList(); $list->enqueue($compressedString1); $list->enqueue($compressedString2); $list->enqueue($compressedString3); // The default placeholder is #|_|# // Each instance of that placeholder below will get replaced: $subject = '{"string1":"#|_|#","string2":"#|_|#","string3":"#|_|#"}'; // The end result is a new compressed string. // Depending on the size of your compressed strings execution // time may go up during a merge since each has to be decoded // and compressed again when merged into the new string. $mergedString = CompressedStringList::merge($subject, '#|_|#', $list);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3